package com.tony.study.designMode.DM3_单例模式;

/**
 * Created with IntelliJ IDEA.
 *
 * @Title: Singleton2
 * @Auther: 皮蛋布丁
 * @Date: 2021/11/01/16:25
 * @Description: 单例模式（线程安全，对当前单利对象上锁）、懒汉式
 */
public class Singleton2 {

    //私有构造器，防止外部new实例
    public Singleton2() {
    }
    private static Singleton2 instance = null;

    /**
    * @Description: getInstance 虽然线程安全，但是每次调用getInstance获得实例时，都会对当前得对象进行加锁
     * 注意：是每一次，那多线程环境下性能会有所下降，但是我们知道单例模式得实例是全局只创建一次得
     * 因此，这个锁不应该在每次获取实例得时候加锁，而应该加在第一次创建对象上
    * @Param: []
    * @return: com.tony.study.designMode.MD3_单例模式.Singleton2
    * @Author: 皮蛋布丁
    * @Date: 2021/11/1 16:28
    */
    public static synchronized Singleton2 getInstance() {
        if (instance == null) {
            instance = new Singleton2();
        }
        return instance;
    }

    public void show() {
        System.out.println("你好，我是线程安全懒汉式单例模式！");
    }

}
